WordPress的发展越来越快。我们也已经学会了怎样撰写日志,怎样添加日志分类,甚至还可以为自己的WordPress网站加上几个插件。这时问题可能就出现了,在WordPress主题中稍作修改后返回查看站点,什么变化都没有,修改居然没有生效。这究竟是怎么回事?想尖叫、想拍打电脑来泄愤,可是这有什么用?
冷静冷静。大多数错误都是由一时疏忽造成的。即使时间紧张,也要努力做到从容冷静,不要匆忙之下犯错。这是有好处的。如果还是因为修改无效而郁闷沮丧,试着站起来出去走两步,排遣这些消极情绪。有时只需要转移一下注意力,再回来时我们就会发现那个被遗漏的分号,或者一个多余的引号,甚至可能会意识到实际的解决方案要比我们原先想的简单得多。
修改无效可能是WordPress问题,也可能是数据库问题,甚至可能是服务器问题或我们自己的设计问题,但大多数情况下,原因根本不在这些问题上,浏览器才是罪魁祸首。
无论问题出在什么地方,修改无效时都可以借鉴下面的这些解决方法。
浏览器缓存
我们都知道,计算机的主要作用就是要让我们的生活更简单、更方便,它应该为我们节省更多时间和精力,提高我们的生活品质。好吧,也许在计算机使用上,我们还没能够达到这种程度,但至少互联网浏览器在努力让我们的生活变得更简单些。
我们第一次访问某个网站时,可能需要多一点的加载时间。接下来访问该网站的其它网页时,需要的加载时间就短了很多。这是因为,出于实用性方面的考虑,浏览器将网站信息存储在我们的电脑上,当我们再次访问网站时,浏览器从我们的电脑上而从不是实际的网页上加载。这个过程就叫“缓存”,缓存的目的是加速互联网的浏览速度。
大家应该很熟悉缓存这个术语了。过去海盗和窃贼会把赃物囤积在洞穴、地道等“安全”的地方。而在浏览器中,被“囤积”/缓存的则是一些网页文件和信息,刷新页面或再次查看页面时,浏览器会再次用到这些信息。
如果浏览器认为我们对网站所做修改不明显或不够重要,就会重新加载之前的相同页面,而不是修改后的页面。可以通过清除浏览器缓存来使修改生效。
清除浏览器缓存
正常情况下,要看到网页上的更改,可以点击浏览器工具栏上的刷新按钮或直接按下键盘上的F5键。但大多数情况下这样重新加载的页面都没有清除浏览器的缓存。下面介绍一些除去浏览器缓存的小技巧,帮助大家看到页面重新加载后的修改效果。
Microsoft Internet Explorer浏览器
1. 按住SHIFT键,单击工具栏中的刷新按钮
2. 彻底清除:如果清除缓存遇到问题,可以在菜单栏中选择工具>互联网选项>Internet临时文件。点击删除临时文件。可以选中复选框以删除所有Internet文件,但这会清空我们缓存的密码和cookies,所以我们可以不选中这个复选框。但如果仍然不能看到页面上的变化,还是需要选中复选框,删除所有Internet临时文件。
Mozilla Firefox浏览器
1. 按下CTRL+SHIFT+R
2. 如果使用Chris Pederick的 Web Developer Extension插件,可以点击其它选项下的清除缓存。
3. 彻底清除:在浏览器菜单栏中选择工具>选项>隐私>缓存/隐私数据,点击清除
Netscape浏览器
在菜单栏中选择编辑>首选项>高级。选择“缓存”并同时选中“清除内存缓存”和“清除硬盘缓存”。
Mozilla 1.x以及更高版本
在菜单栏中选择编辑>首选项>高级。选择“缓存”之后“清除缓存”。
Opera
在菜单栏中选择编辑>首选项>历史记录与缓存,选择“缓存”
Safari
在浏览器菜单中选择Safari>重设Safari,点击重设确认,或者选择Safari>清空缓存。
其它
每个浏览器都有阻止/最小化网页缓存的方式。阻止缓存会减慢网页的浏览速度,而且即使阻止缓存,有些缓存还是会生成,但无论怎样,阻止缓存都是有一定优势的。可以点击浏览器的帮助文件,了解关闭缓存功能的具体情况。
WordPress缓存插件
有些WordPress插件也可以为博客增加缓存功能。由于WordPress能从缓存结果中获取博客页面,而不是重新生成页面,这样就加快了博客的加载速度。
每当有新日志、页面或评论发表时,好的缓存插件会清空缓存。尽管如此,如果在别的地方做了改动(例如修改了主题),缓存可能不会被清空,重新加载时出现的仍然是原先的页面。这种情况下可以打开插件的使用说明,查看怎样才能清除缓存。
注意:WordPress没有将缓存作为默认功能,只有我们自己安装缓存插件后才能对缓存信息进行处理。
检查源代码
即使是最优秀的网页设计人员、开发人员和程序开发人员都有可能出错。这些错误通常是些细节性问题,比如忽略了某个分号,拼写错了某个标签,没有注意到某个引起混乱的小问题等。下面我们来看看一些经常出错但又容易被忽略的细节问题。
检查文件地址
我们“修正”的文件的文件名和文件夹是否与当前正在浏览的文件名一致?首先请看下面这两个URL地址。
- wordpress/wp-content/themes/yourtheme/style.css
- test/wordpress/wp-content/themes/yourtheme/style.css
这样我们基本能够看出两个URL的不同之处,但如果在地址栏或文本编辑器中,可能就会忘记规定文件夹位置的单词test了。
使用不同样式表文件名时,还要特别注意style1.css和stylel.css。前者是style加上数字1,后者则是style加上小写字母l。在名称相似的文件中进行操作时,最好用容易区分的名称为文件命名,以便区分,如style-red.css与style-800.css。
检查模板
编辑模板文件时,你能确定当前查看的页面是由自己编辑的模板生成的吗?很多模板上的内容都非常相似;例如,日志页头可能会出现在单篇日志页面上,也可能出现在索引页面、搜索页面、存档页面等模板上。
如果无法确定自己需要使用的模板文件,请参考模板层级。
检查上传文件
修改某个文件后,文件会保留在计算机的硬盘中,我们要将文件上传到虚拟主机服务器后才能在网站上看到自己所做修改。这时需要仔细检查,我上传了文件吗?文件的上传位置对吗?上传成功了吗?重写原有文件时,有时可能是不完全重写,所以可以考虑在虚拟主机服务器上删除原有文件,然后将重写的新文件上传到服务器上,确保服务器上具有内容准确的完整文件。
检查其他内容
如果仍然看不到自己做的修改,而修改的文件又在正确的位置上,文件名也没有问题,如果确定这就是应该修改的文件,请参考以下操作:
1. 备份需要修改的文件并保存在安全的位置
2. 做一个明显改动(如在style.css文件中将背景设为#ff0000甚至red)
3. 在浏览器中查看改动过的网页。清除缓存以确保所看到的是最新网页。
4. 如果改动无效,从服务器中删除改动过的文件(仅删除该文件),再次检查改动是否生效。如果仍然没有变化,这说明我们和WordPress查找的是完全不同的文件。这时我们就可以开动脑筋,追踪产生问题的原因以及文件的去向。
5. 在选项栏和数据库中查看URL设置,如果问题仍然没有解决,请前往WordPress论坛寻求帮助,详细说明自己的操作和导致的结果,让专家帮你解决问题。
除错
程序开发人员用debug这个术语来表示彻底检查代码并找出出错原因的过程。下面我们来逐个分析如何除去CSS、HTML、PHP代码中的错误,解决修改无效问题。
为某个问题除错时,一次只改动一个处内容。例如,如果不确定问题出在第37行或第40行,就不要同时改动两行内容。可以先修改第37行内容,然后查看问题是否被改正。如果没有,撤销对37行的改动,修改第40行内容。即使前一次的改动没有立即产生新问题,再次进行改动前也应该撤销前一次的改动,这是个非常重要的操作。
每次改动文件都有可能会引发更多错误。这些改动可能一个连着一个,牵一发而动全身,最后使除错变成一个繁琐复杂的过程。因此最好一次性只修改一处内容。
CSS除错
为样式表或CSS除错是一项很有挑战性的任务。我们不仅要从HTML中找到引发问题的具体位置,还要返回style.css文件,查看该具体位置在style.css文件中的样式。查找CSS样式中介绍了一些常见出错区域。
找到引发问题的样式表后,需要进一步了解该样式表。解决CSS问题时可以参考下面的速查表:
- 单词拼写都正确吗?
- 句号、括号、冒号、分号都在恰当的位置上吗?
- 样式属性或声明使用正确吗?
- 样式表中有类似font-weight:x-large这样本来不应该存在的声明吗?x-large用于font-size而不是font-weight。
- 有没有空格出现在不该出现的地方,像是background-image:url ( ' bg.gif ' )?(正确形式:background-image:url('bg.gif'))
更多CSS疑难解答信息请见:
HTML除错
HTML与CSS一样,也会因为一些类似拼写错误、未闭合的标签、被遗漏的<箭头等细微错误而使整个网站显示异常。
强烈推荐大祭司使用网络上的免费HTML验证程序来验证HTML代码。同时Mozilla Firefox也有一款名为Web Developers DOM Inspector、功能强大的免费插件(安装Firefox时基本会附带该插件),帮助用户轻松迅速地验证HTML代码并修复网站问题。
下面是为HTML/XHTML除错的一些小技巧:
- XHTML嵌套不当,尤其是在侧边栏中常见的嵌套列表中
- 标签未闭合
- 自闭合的标签没有使用左斜线关闭(示例:<img src="ball.gif" />)
- 标签使用不当
更多HTML除错信息请见:
PHP除错
仔细阅读web服务器的错误日志(error log)。PHP通常会将错误信息记录在错误日志中。错误日志信息相对隐秘,但它们通常会给出错误代码所在行数。
但PHP认为的错误代码,未必就是问题症结所在。例如,一个未闭合的大括号{也可能会被脚本报告成错误问题。PHP错误信息速查表及其起因请见Common PHP Errors。
要在PHP中除错,可依照以下步骤:
确定当前位置
die()命令可能是一个最有效的除错工具,它可以使程序立即停止执行,并选择性地按照我们的意愿显示信息。
尝试解决问题时,可将die()语句散置在脚本的各个关键版块,使每个版块都具备一个有价值的信息:
die('Stage One Complete'); die('Disinfribullation Complete'); die('Finished Collating');
加载程序,查看是否有信息被显示。如果看到的是第一个信息,说明到这里程序一直都运行正常。删除(或标注)第一个die()命令,重新运行程序,查看是否有信息显示。重复以上步骤,直到确定产生问题的版块。
尽管如此,这个方法也有它的局限性。首先,如果浏览器没有显示任何信息,那么应该是脚本中某个地方出现了重大的语句错误。这时应该尽可能地检查web服务器的错误日志。如果脚本已经执行完毕——但不是正确执行——但没有显示任何die()信息,接下来还要继续查找问题所在。
查找问题
如果设置与预想的不一样,或者希望出现某个结果却没有出现,这时可能需要检查脚本不同位置上不同变量的值。只要将变量传递给一个die()命令,就可以看到变量的值:
die($user_level);
这会给出变量$user_level的值,变量值表明当前用户的用户级别。
在编程中,对布尔型以及字符串型("scalar")变量来说这是一种好方法;但这种方法不适用于数组和对象。要查看数组和对象的值,可以使用print_r命令:
print_r($post);
该命令会以人类可读的格式显示$post数组的值:
Array ( [0] => stdClass Object ( [ID] => 1 [post_author] => 1 [post_date] => 2005-02-16 09:16:46 [post_date_gmt] => 2005-02-16 14:16:46 [post_content] => Welcome to WordPress. This is your first post. Edit or delete it, then start blogging! [post_title] => Hello world! [post_category] => 0 [post_excerpt] => [post_status] => publish [comment_status] => open [ping_status] => open [post_password] => [post_name] => hello-world [to_ping] => [pinged] => [post_modified] => 2005-04-15 08:45:42 [post_modified_gmt] => 2005-04-15 13:45:42 [post_content_filtered] => [post_parent] => 0 [guid] => /?p=1 [menu_order] => 0 ) )
通过这种格式可以看出数组中的关键字对/值对。
使用print_r()并不会中断程序执行,因此之后还需要立即调用die()命令。
在脚本执行过程中,用print_r()和die()来查看变量值。var_dump()函数也具有类似功能。选择对自己更有帮助性的方法来查看变量值。
如果以上方法都没能找出修改无效的原因
如果以上方法都没能找出修改无效的原因,也不用担心。要使网站恢复正常,可以查看下面这些资料,寻找更多帮助:
分类:中文手册